package cn.neusoft.util;

import cn.neusoft.exception.AppException;
import cn.neusoft.vo.ResultBean;

import java.util.Objects;

public class ExceptionUtils {

    // 在使用openfeign调用时，由于统一异常处理的存在，在被调用模块发生异常时
    // 调用模块会得到一个由ResultBean.error()返回的报告错误的resultBean
    // 但不使用openfeign时，包含错误信息的resultBean会通过controller直接返回给前端
    // 但此时包含错误的resultBean却被调用模块接受了，没有返回给前端
    // 这个方法就是为了解决这个情况，将错误重新抛出，以便返回给前端
    public static void throwOriginalException(ResultBean resultBean){
        Integer code = resultBean.getCode();
        String msg = resultBean.getMsg();
        // 异常
        if(!Objects.equals(code, 200)){
            if(Objects.equals(code, 500)){  // 非AppException
                throw new RuntimeException(resultBean.getMsg());
            }else{  // AppException
                throw new AppException(code, msg);
            }
        }
    }
}
